<?php

class Cirugia_Model extends CI_Model
{
    function __construct()
    {
        parent::__construct();
    }
     
    function finalizaCiru($orden,$pac){
        $estadoProce=array('EstadoProcedimiento'=>2);
        $aestOr=array('EstadoOrden'=>3);
        $estPac=array('EstadoPaciente'=>1);
        //procedimiento de la cirugia
        $cad="Select Procedimiento from detallecirugia where orden=".$orden;
        $proc=$this->db->query($cad)->result_array();
        $iproc=$proc[0]['Procedimiento'];
        $this->db->where('Procedimiento', $iproc);        
        $this->db->update('procedimiento', $estadoProce);
        //procedimiento de cita cirugia
        $cad="Select Procedimiento from orden where orden=".$orden;
        $proc=$this->db->query($cad)->result_array();
        $iproc=$proc[0]['Procedimiento'];
        $this->db->where('Procedimiento', $iproc);        
        $this->db->update('procedimiento', $estadoProce);        
        $this->db->where('Orden', $orden);
        $this->db->update('orden', $aestOr); 
        $this->db->where('Persona', $pac);
        $this->db->update('paciente', $estPac); 
    }
    
function guardarInfoCiru($idProcediminto,$complicaciones,$recomendaciones,$tratamiento,$empleados){
    $Actu=array('Recomendacion'=>$recomendaciones,'Complicaciones'=>$complicaciones,
        'Tratamiento'=>$tratamiento);//se actualiza a En proceso
    $this->db->where('Procedimiento', $idProcediminto);
    $this->db->update('detallecirugia', $Actu); 

    $this->guardarEmpleProc($empleados,$idProcediminto);
    
}
function obtenIdPac($idProcedimiento){
    $cad="select distinct Persona from procedimiento where Procedimiento=".$idProcedimiento;
    return $this->db->query($cad)->result_array();

}
function buscardetalleCirugia($idProcedimiento){
    $cad="select distinct * from detallecirugia where Procedimiento=".$idProcedimiento;
    return $this->db->query($cad)->result_array();

}
function nomEstado($orden){
    $cad="select distinct est.Descripcion as descrip from orden ord, estadoorden est where est.EstadoOrden=ord.EstadoOrden and ord.Orden=".$orden;
    return $this->db->query($cad)->result_array();   
}
function nomPaciente($codPac){
    $cad="select distinct Nombres as nom, Apellido_Paterno as apeP, Apellido_Materno as mat from orden ord, persona per where per.Persona=ord.Persona and ord.Persona=".$codPac;
    $arr=$this->db->query($cad)->result_array();
    return $arr[0];    
}
function nomPersonal($codPer){
    $cad="select distinct ps.CodigoPersonal as cod, per.Nombres as nom, per.Apellido_Paterno as apeP, per.Apellido_Materno as mat from persona per,personal ps where per.Persona=ps.Persona and per.Persona=".$codPer;
    return $this->db->query($cad)->result_array();
       
}
function nomEspeciali($iEpe){
    $cad="select distinct Descripcion from especialidad where Especialidad=".$iEpe;
    $arr=$this->db->query($cad)->result_array();
    return $arr[0];
}
function obtenerPlani($idProc){
    $arr=$this->obtenerPersonalxCiru($idProc);
    $personal=$arr[0];
    $cad="select distinct *  from rangohorario where Persona=".$personal['personal'];
    $arr=$this->db->query($cad)->result_array();
    
    return $arr;
   
}
function comboEquipo(){   
    $cad="select  EquipHosp as value ,  Descripcion as label from equiphosp ";
    return $this->db->query($cad)->result_array();    
}

function buscarSitio($idProc){   
    $cad="select distinct Ambiente  from asigpacientesitio where Procedimiento=".$idProc;
    $arr=$this->db->query($cad)->result_array();
    return $arr[0];
}
function buscarPer($Documento,$nombre,$apePat,$apeMat,$idProce){
    $con="";
    if ($idProce!=""){
       $cad="select Cita from cita where Procedimiento=".$idProce;
        $resultado = $this->db->query($cad)->result_array();
        if(count($resultado)!=0){
            $cita=$resultado[0];
            $con=" and pe.persona not in (SELECT Persona FROM latisoft.citaxpersonal where Cita=".$cita['Cita'].")";
        }
    }
    $sql="select distinct pa.CodigoPersonal codPer,pe.Nombres as nom,pe.Apellido_Paterno as pat,pe.Apellido_Materno as mat,tip.Descripcion as descrip, pe.persona as pers from 
        tipopersonal tip, persona pe, personal pa, citaxpersonal citPer  where  pe.persona=pa.persona and tip.TipoPersonal=pa.TipoPersonal ";

        if ($Documento != ''){
            $cond1 = " and CodigoDocumento like '%$Documento%'";
        }else{
            $cond1 = "";
        }
        if ($nombre != ''){
            $cond2 = " and Nombres like '%$nombre%'";
        }else{
            $cond2 = "";
        }
        
        if ($apePat != ''){
            $cond3 = " and Apellido_Paterno like '%$apePat%'";
        }else{
            $cond3 = "";
        }
         if ($apeMat != ''){
            $cond3 = " and Apellido_Materno  like '%$apeMat%'";
        }else{
            $cond3 = "";
        }
        $sql=$sql.$cond1.$cond2.$cond3.$con;
       
       return $this->db->query($sql)->result_array();
}
function estaEncirugia($IdPersona,$IdProce){
    $empleadoProg=$this->obtenerPersonalxCiru($IdProce);
    $ret=false;
    foreach($empleadoProg as $emple){
        if ($emple['personal']==$IdPersona){
            $ret =true;break;
        }
    }
    return $ret;
}
function guardarEmpleProc($empleados,$procedimiento){
    $cad="select Cita from cita where Procedimiento=".$procedimiento;
    $ret = $this->db->query($cad)->result_array();
    $resultado=$ret[0];    
    $this->load->model('Persona_model');
    if(!empty($empleados)){
            $elemts=count($empleados);
            for($i=0;$i<$elemts;$i++){
                $personaD=$this->Persona_model->buscarIDPersonal($empleados[$i]); 
                if(!$this->estaEncirugia($personaD['Persona'],$procedimiento)){
                  $datemp=array('Cita'=>$resultado['Cita'],'Persona'=>$personaD['Persona']);
                    $this->db->insert('citaxpersonal', $datemp);  
                }                
            }           
        }
}
function guardarMedicamentos($idProcediminto,$nomMedicament,$cantMedicament){
    $ind=0;
    if(count($nomMedicament)!=0){
       for ($i=0;$i<count($nomMedicament);$i++){
        $datos=array('Procedimiento'=>$idProcediminto,'Producto'=>$nomMedicament[$i],'Cantidad'=>$cantMedicament[$ind]) ;
        $this->db->insert('medicamentoxcirugia',$datos);
        $ind++;
    } 
    }
    
}
function combo_ambienteHosp() {
    $cad = 'SELECT Ambiente as value, Descripcion as label FROM ambiente where Ambiente=PadreAmbiente and TipoAmbiente=1 and Estado=0';

    $resultado = $this->db->query($cad)->result_array();

    return $resultado;
}    
function combo_ambiente() {
    $cad = 'SELECT Ambiente, Descripcion FROM ambiente where Ambiente=PadreAmbiente and TipoAmbiente=2';

    $resultado = $this->db->query($cad)->result_array();

    $combo = array();
    $combo[0] = 'Seleccione un ambiente';
    foreach ($resultado as $r) {
        $combo[$r['Ambiente']] = $r['Descripcion'];
    }
    return $combo;
}
 function comboAnidado($idAmbiente,$fecha,$horaini,$horafin) {
     $cad = 'SELECT Ambiente, Descripcion FROM ambiente where PadreAmbiente=' . $idAmbiente . ' and Ambiente<>' . $idAmbiente . '  and TipoAmbiente=2';        
     $resultado = $this->db->query($cad)->result_array();
     $i=0;
     foreach ($resultado as $ambiente){
         $strOcupa="SELECT DISTINCT  DATE_FORMAT(Fecha,'%d-%m-%Y') as Fech, HoraIni, HoraFin from rangohorario where Ambiente=".$ambiente['Ambiente'];
         $restAmb = $this->db->query($strOcupa)->result_array();         
         foreach ($restAmb as $ocupado){             
             if(strcmp ($ocupado['Fech'],$fecha)==0){
                 //print_r($ambiente['Ambiente']." ".$horaini." ".$ocupado['HoraIni']."  ".$horafin." ".$ocupado['HoraFin']."  ");
                    if(!(($horaini<=$ocupado['HoraIni'] && $horafin<=$ocupado['HoraIni'])  ||
                        ($horaini>=$ocupado['HoraFin'] && $horafin>=$ocupado['HoraFin'])) ){                                                                
                        array_splice($resultado, $i, 1);
                    }
             } 
         }
         $i++;
     }
     //print_r($resultado);
     return $resultado;
    }
 function enviarPersonal($codigo){
     $cad="select pa.Nombres nom,pa.Apellido_Paterno apeP, pa.Apellido_Materno apeM
			from 	personal pl, persona pa
			where pl.Persona = pa.Persona and CodigoPersonal LIKE '$codigo'";
      return $this->db->query($cad)->result_array();
     
 }
function buscarOrden($argCodOrden,$argCodPaciente, $argNombres, $argApePat, $argApeMat){
        if ($argCodOrden != ''){
            $cond1 = "and ord.Orden like '%$argCodOrden%'";
        }else{
            $cond1 = "";
        }
        if ($argCodPaciente != ''){
            $cond2 = "and ord.Persona like '%$argCodPaciente%'";
        }else{
            $cond2 = "";
        }
        
        if ($argNombres != ''){
            $cond3 = "and per.nombres like '%$argNombres%'";
        }else{
            $cond3 = "";
        }
        if ($argApePat != ''){
            $cond4 = "and per.Apellido_Paterno like '%$argApePat%'";
        }else{
            $cond4 = "";
        }
        
        if ($argApeMat != ''){
            $cond5 = "and per.Apellido_Materno like '%$argApeMat%'";
        }else{
            $cond5 = "";
        }
        
        $sql = $this->db->query("
            SELECT ord.Orden ID_exXOrden, pac.Codigo Paciente, per.Nombres Nombres, per.Apellido_Paterno ApePaterno, eord.descripcion Estado, ord.fechaOrden Fecha, ord.estadoorden idEstOrden, ord.especialidad IdEsp, esp.descripcion DescEsp
            FROM orden ord, persona per, paciente pac, estadoorden eord, especialidad esp
            WHERE ord.Persona = per.Persona
            AND per.Persona = pac.Persona
            AND ord.OrdenPadre IS NULL 
            AND esp.EspecialidadPadre = ".ID_ESP_CIRUGIA ."
            AND eord.estadoorden=ord.estadoorden 
            AND esp.especialidad=ord.especialidad  and not(eord.descripcion like '%terminada%') and not(eord.descripcion like '%proceso%') 
                and (ord.Orden in (SELECT ord.OrdenPadre OrdenPadre         
            FROM orden ord, estadoorden eord, especialidad esp
            WHERE 
            not(ord.OrdenPadre IS NULL )            
            AND eord.estadoorden=ord.estadoorden 
            AND esp.especialidad=ord.especialidad  and not(eord.descripcion like '%terminad%')           
            GROUP BY ord.OrdenPadre)) 
                $cond1 $cond2 $cond3 $cond4 $cond5
            ORDER BY ord.fechaOrden");
       
        return $sql->result_array();
       
    }

    
    function buscarOrdPadreExNoTerm(){
        
        
        $sql = $this->db->query("
            SELECT ord.Orden Orden , ord.OrdenPadre OrdenPadre         
            FROM orden ord, estadoorden eord, especialidad esp
            WHERE 
            not(ord.OrdenPadre IS NULL )            
            AND eord.estadoorden=ord.estadoorden 
            AND esp.especialidad=ord.especialidad  and not(eord.descripcion like '%terminada%')           
            GROUP BY ord.OrdenPadre");
       
        return $sql->result_array();
       
    }

    
    function buscarExamenes($argCodOrden){
                
        $sql = $this->db->query("
            SELECT ord.Orden IdOrdenEx,  esp.descripcion DescExamen, ord.Persona Persona
            FROM orden ord, especialidad esp
            WHERE ord.OrdenPadre = $argCodOrden
            AND esp.especialidad = ord.especialidad            
            ORDER BY ord.Orden");
       
        return $sql->result_array();
       
    }

    
//     function getMedicamentos(){
//        $query = $this->db->query("Select * from producto ");
//        return $query->result_array();
//    }
    
    function getMedicamentos(){
        $query = $this->db->query("Select p.Producto , p.Descripcion Descripcion, p.Nombre, p.PrecioVenta, 
            p.PrecioCosto, p.TipoProducto, p.CodigoProducto, p.ProductoPadre, p.Magnitud, p.UnidadProducto, 
            p.Marca, p.Stock, up.UnidadProducto, up.Descripcion Descripcionup 
            from producto p, unidadproducto up 
            where up.UnidadProducto=p.UnidadProducto");
        return $query->result_array();
    }
    function obtenerEquixCiru($idProc){
        $query = $this->db->query("Select eq.EquipHosp as IdEqui , eq.Descripcion as NomEqui, exc.Cantidad as cant
            from equiphosp eq , equipoxcirugia exc 
            where exc.Procedimiento=$idProc and exc.Equipo= eq.EquipHosp");
        return $query->result_array();
    }
    function obtenerMedicxCiru($idProcimiento){
        $query = $this->db->query("Select mc.Producto as IdMed , p.Descripcion as NomMed, mc.cantidad as cant
            from medicamentoxcirugia mc , producto p
            where mc.Procedimiento=$idProcimiento and mc.Producto= p.Producto");
        return $query->result_array();
    }
    
    
    function obtenerPersonalxCiru($idProcimiento){
        
        
        $query = $this->db->query("Select cxp.Persona as personal
            from consulta con, cita cit, citaxpersonal cxp
            where con.Procedimiento=$idProcimiento and con.Procedimiento=cit.Procedimiento and cxp.Cita=cit.Cita");
        return $query->result_array();
    }
    
    function obtenerPersonal($codPersona){
        $query = $this->db->query("Select per.codigopersonal as codPersonal, pers.nombres as nombre, pers.Apellido_Paterno as apePat, pers.Apellido_Materno as apeMat, tper.descripcion as tipoPersonal
            from  persona pers, personal per, tipopersonal tper
            where per.persona= $codPersona and per.tipopersonal=tper.tipopersonal and pers.persona=per.persona");
        return $query->result_array();
    }
    
    
    function buscarPacientesCirugia2(){
               
        $sql = $this->db->query("
            select
            pa.Codigo Codigo,
            pe.Persona Persona,
            pe.Nombres Nombres,
            pe.Apellido_Paterno Apellido_Paterno,
            pe.Apellido_Materno Apellido_Materno,
            pe.Direccion Direccion,
            pe.Telefono Telefono 
            from orden ord,paciente pa, persona pe 
            where ord.EstadoOrden=2  and ord.Persona=pa.Persona and pa.Persona = pe.Persona and pa.estadopaciente=21
            ;");
       
          $row=$sql->result_array();
          
       return $row;
    } 
    
    public function buscarIdProceCiru($Idpaciente){
        $cad="select distinct detc.Procedimiento procedimiento from detallecirugia detc, orden ord where ord.EstadoOrden=2 and 
           ord.Orden=detc.Orden and  ord.Persona=".$Idpaciente;
        return $this->db->query($cad)->result_array();
        
    }
}
?>
